A software asset is a set of one or more related artifacts that have been created or harvested for the purpose of applying that asset repeatedly in subsequent contexts. The asset consumer is an architect or a designer of any type of IT or business process solutions from solution business modeling, analysis (assets used are models) and design to application development (assets used are pieces of code).
The IT industry has standardized software asset packaging. The Object Management Group (OMG) (OMG is either a registered trademark or a trademark of Object Management Group, Inc. in the United States and/or other countries) Reusable Asset Specification (RAS) is a set of guidelines and recommendations about the structure, content and descriptions of reusable software assets' (see Version 2.2 of November 2005). The RAS identifies categories of software assets which have a consistent packaging. RAS supports customization of assets which is a key point for the software asset consumer. In RAS, an asset being a container of artifacts, a Variability point is a point in an artifact which is expected to be adapted by the consumer to a target solution. With the variability support of RAS it is possible, for instance, to only consume a subset of an asset.
The patent application US 2003/0046282 published on Mar. 6, 2003 discloses an asset retrieval module to selectively retrieve a subset of a software asset from the asset library based on input from the user. The object of this patent application also aims at providing a solution for facilitating the step of accessing software assets based upon the consumer decision for customization. The object of this patent application, however, is more focused on the creation and consumption of assets, rather than their access or search.
On the basis of the support for software asset packaging and access, there is a need to provide full support for the consumption of reusable software assets. RAS can be used to specify the rules for installing, customizing and using a software asset. In RAS, the Usage section of the asset contains the rules for installing, customizing and using the asset. Although the usage text describes the activities to be performed by user or tooling to use an asset, this free form text does not provide enough structured guidance.
To consume assets, the user needs also to have in mind the asset based solution he wants to implement. It is recommended in the article Design Decision Trees from Alexandre Ran and Juha Kuusela from Nokia Research Center published at the 1996 IEEE, Proceedings of IWSSD-8, to apply a hierarchical organization of design patterns into a Design Decision Tree that is a partial ordering of design decisions constraints imposed by earlier decisions. In general, a decision tree may help the user in a series of decisions to reach a final target, one leaf of the tree. A software asset consumer could get down a decision tree by applying a design pattern corresponding to a set of software assets. Once the good design path, that is the asset based solution is decided, the consumer has to perform the customization of each software asset of the target solution using a repository such as RAS.
The main drawback of this type of approach is that, because the asset provider creates asset repositories on one side and separate documentation usually in text files (containing edited text, HTML, XML, SGML etc. . . . ), the asset consumer building a software asset based solution relies on two separate sources of information, i.e. the asset(s) to consume and the decision trees to guide this consumption, which leads to a two-step approach: browsing of the decision tree and deciding which path to take i.e. choosing the path which leads to target, and secondly, he has to follow this path to customize the asset. There is a need for providing software asset consumers with a method for building a target software solution avoiding a two-step (path decision, software asset customization) process.